#pragma once
#define xfinal_tmpl(PACK,NAME,...)                              \
struct NAME : PACK::NAME<NAME<__VA_ARGS__>, __VA_ARGS__> {      \
    using PACK::NAME<NAME<__VA_ARGS__>, __VA_ARGS__>::NAME;     \
}

#define xfinal(PACK,NAME)                                       \
struct NAME : PACK::NAME<NAME> {                                \
    using PACK::NAME<NAME>::NAME;                               \
}
